package cn.good.yan.m4;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.core.Message;
import com.rabbitmq.client.Channel;
import org.springframework.stereotype.Component;

import java.io.IOException;

/**
 * 监听器 - 监听消息 - 消费者-队列消息优先级
 * 演示1：需要启动生产者（MyMessageListener）启动该服务、消费者（Test4）模拟发送消息
 * 生产者发送消息，消费者，这边监听会得到消息
 * // 演示1：先执行1 - 生产者发送请求，优先级 1
 * //       再执行2 - 生产者发送请求，优先级 2
 * //       再执行3 - 生产者发送请求，优先级 3
 * // 理论上，队列上的消息，（先进先出） 消息1、消息2、消息3 的顺序在队列中，但是实际顺序是：消息3、消息2、消息1
 * // 消费者，先消费：消息3、消息2、消息1
 *
 * @author shengren.yan
 * @create 2024-06-19
 */
@Component
@Slf4j
public class MyYXJListener1 {

    public static final String QUEUE_PRIORITY = "queue.test.priority";

    // 消费者监听消息
//    @RabbitListener(queues = {QUEUE_PRIORITY})
    public void processPriorityMessage(String data, Message message, Channel channel) throws IOException {
        log.info("消费者接受到消息：" + data);
        channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
    }


}
